package com.zhangxin.aiInterview.utils;

import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 音频情绪序列存储管理器
 * 用于全局管理用户的音频情绪序列数据
 */
@Component
public class AudioEmotionsSequenceManager {

    // 线程安全的全局存储 Map
    // Key: 用户ID (Long)
    // Value: 用户的情感序列列表 (线程安全的ArrayList，每个元素是一次情感分析的结果字符串)
    private final ConcurrentHashMap<Long, List<String>> emotionSequenceMap = new ConcurrentHashMap<>();

    /**
     * 添加一次音频情感序列分析结果
     * 
     * @param userId 用户ID
     * @param emotionSequence 情感序列字符串，格式为"Clam//Confident//Nervous"等
     */
    public void addEmotionSequence(Long userId, String emotionSequence) {
        // 使用computeIfAbsent确保每个用户对应的列表是线程安全的
        emotionSequenceMap.computeIfAbsent(userId, k -> Collections.synchronizedList(new ArrayList<>()))
                          .add(emotionSequence);
    }

    /**
     * 获取指定用户的所有音频情感序列记录
     * 
     * @param userId 用户ID
     * @return 用户的情感序列列表（按照时间顺序），如果用户不存在则返回空列表
     */
    public List<String> getEmotionSequences(Long userId) {
        return emotionSequenceMap.getOrDefault(userId, Collections.emptyList());
    }

    /**
     * 清除指定用户的所有音频情感序列记录
     * 
     * @param userId 用户ID
     */
    public void clearEmotionSequences(Long userId) {
        emotionSequenceMap.remove(userId);
    }

}